
from bs4 import BeautifulSoup

soup = BeautifulSoup(open('21_解析_bs4的基本使用.html',encoding='utf-8'),'lxml')

# # 找到的是第一个符合的数据
# print(soup.a)
# print(soup.a.attrs)

#bs4的一些函数
# find
# print(soup.find('a'))
# print(soup.find('a',title="a2"))
# print(soup.find('a',class_='a1'))
# print(soup.find('a',attrs={'class':'a1'}))

# find_all
# print(soup.find_all('a'))
# print(soup.find_all(['a','span']))
# print(soup.find_all('li',limit=2))

# select (推荐)
# 返回一个列表
# print(soup.select('a'))
# print(soup.select('.a1'))
# print(soup.select('#cxl'))

# 属性选择器
# print(soup.select('li[id]'))
# print(soup.select('li[id="l2"]'))
# 层级选择器
# print(soup.select('div li'))
# print(soup.select('div > ul > li'))
# print(soup.select('div>ul>li'))

# print(soup.select('a,li'))
# 节点信息
obj = soup.select('#d1')[0]
# 如果标签对象中 只有内容 那么string 和 get_text()都可以使用
# 如果标签对象中 除了内容还有标签 那么string就获取不到数据 而get_text()是可以获取数据
# 我们一般情况下 推荐使用get_text()
# print(obj.string)
# print(obj.get_text())

# 节点属性
# obj =soup.select("#p1")[0]
# print(obj.name)
# print(obj.attrs)

# 获取节点的属性
obj =soup.select("#p1")[0]
print(obj.attrs.get('class'))
print(obj.get('class'))
print(obj['class'])
